package com.lzc.handler;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/*
*     必须实现InvocationHandler接口完成代理类要做的功能
*        1、调用目标方法
*        2、功能增强
* */
public class MyHandler implements InvocationHandler {

       private Object target = null;

        //动态代理:目标对象是活动的，不是固定的，需要传入进来
        //传入给谁就给谁创建动态代理
        public MyHandler(Object target){
             // 给目标对象赋值
             this.target = target;
        }

    @Override            // jdk创建的代理对象无需赋值
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
           Object res = null;
           //向厂家发送订单
            res = method.invoke(target,args); //执行目标方法
            //增强功能
            if(res != null){
               Float price = (Float)res;
               res = price + 25;
            }
            //其他功能 【增强功能】
            System.out.println("商家返回一个优惠券");
            //  返回目标方法的执行结果
            return res;

    }


}
